iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0

今天設計一款遊戲,名為:戰鬥吧!勇士。
並在DAY12介紹OOP 的使用

目錄:

1.遊戲流程:
2.技術介紹:
3.遊戲呈現

1.遊戲流程:
玩家將扮演一位勇士,與隨機生成的敵人進行戰鬥。每次戰鬥中,玩家和敵人將輪流進行攻擊,直到其中一方的生命值降為零。遊戲結束後,玩家可以選擇重新開始或退出遊戲。

2.技術介紹:

  1. 面向對象設計(OOP):
    /遊戲將使用面向對象的方式來設計,包括Player和Enemy兩個主要類別,這些類別將擁有自己的屬性和方法。這種設計方式有助於提高代碼的可讀性和可維護性。
    /每個類別將包含屬性如health(生命值)和attackPower(攻擊力),以及方法如attack()和takeDamage()。

  2. 隨機性:
    /使用java.util.Random來生成隨機的敵人屬性(如生命值和攻擊力),讓每場戰鬥都具有不可預測性,增加遊戲的挑戰性和趣味性。

  3. 控制流程:
    /使用while循環和if-else結構來管理遊戲的進程,包括攻擊輪次和生命值檢查。

  4. 交換用戶:
    /使用Scanner來處理用戶輸入,允許玩家選擇進行攻擊或退出遊戲。

  5. 數據持久性(進階選項):
    /可以引入簡單的數據存儲功能,比如使用文件來保存玩家的戰績,讓玩家下次打開遊戲時可以查看自己過去的表現。

3.遊戲呈現

import java.util.Random;
import java.util.Scanner;

class Character {
String name;
int health;
int attackPower;

public Character(String name, int health, int attackPower) {
    this.name = name;
    this.health = health;
    this.attackPower = attackPower;
}

public void attack(Character enemy) {
    System.out.println(this.name + " attacks " + enemy.name);
    enemy.takeDamage(this.attackPower);
}

public void takeDamage(int damage) {
    this.health -= damage;
    System.out.println(this.name + " takes " + damage + " damage, remaining health: " + this.health);
}

public boolean isAlive() {
    return this.health > 0;
}

}

public class BattleGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();

    System.out.println("Enter your warrior's name: ");
    String playerName = scanner.nextLine();
    Character player = new Character(playerName, 100, 20);

    while (true) {
        Character enemy = new Character("Enemy", random.nextInt(50) + 50, random.nextInt(15) + 10);
        System.out.println("A wild " + enemy.name + " appears with " + enemy.health + " health!");

        while (player.isAlive() && enemy.isAlive()) {
            System.out.println("\nChoose your action: (1) Attack (2) Run");
            int choice = scanner.nextInt();

            if (choice == 1) {
                player.attack(enemy);
                if (enemy.isAlive()) {
                    enemy.attack(player);
                }
            } else if (choice == 2) {
                System.out.println("You ran away!");
                break;
            } else {
                System.out.println("Invalid choice, try again.");
            }
        }

        if (!player.isAlive()) {
            System.out.println("You have been defeated! Game Over.");
            break;
        } else if (!enemy.isAlive()) {
            System.out.println("You defeated the enemy!");
        }

        System.out.println("Do you want to play again? (yes/no)");
        scanner.nextLine();  // clear buffer
        String playAgain = scanner.nextLine();

        if (!playAgain.equalsIgnoreCase("yes")) {
            System.out.println("Thanks for playing!");
            break;
        }
    }

    scanner.close();
}

}

進一步的擴展:

*難度調整:隨著玩家的勝利,敵人的強度可以逐漸增加,以保持遊戲的挑戰性。
*裝備系統:為玩家和敵人引入裝備系統,裝備可以影響攻擊力和防禦力,增加戰鬥的策略性。
*技能系統:增加技能和魔法,讓戰鬥過程更加豐富和多樣化。


上一篇
DAY10新增遊戲功能-for迴圈及其他語法
下一篇
DAY12簡介OOP(物件導向程式設計/Object-Oriented Programming)
系列文
從0開始—初階程式語言學習者的必經之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言